#include <bits/stdc++.h>
using namespace std;

/*
717. 1 比特与 2 比特字符
已解答
简单
相关标签
premium lock icon
相关企业
提示
有两种特殊字符：

第一种字符可以用一比特 0 表示
第二种字符可以用两比特（10 或 11）表示
给你一个以 0 结尾的二进制数组 bits ，如果最后一个字符必须是一个一比特字符，则返回 true 。

 

示例 1:

输入: bits = [1, 0, 0]
输出: true
解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。
所以最后一个字符是一比特字符。
示例 2:

输入：bits = [1,1,1,0]
输出：false
解释：唯一的解码方式是将其解析为两比特字符和两比特字符。
所以最后一个字符不是一比特字符。
 

提示:

1 <= bits.length <= 1000
bits[i] 为 0 或 1
*/

// 法一
class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
        int i = 0;
        int n = bits.size();
        // 1跳2步（两比特），0跳1步（一比特）
        while (i < n - 1) {
            // 最后一个是0  不遍历
            i += bits[i] + 1;
        }
        // i 到最后一位 说明0是1比特 else 就是2比特的后半段
        return i == n - 1;
    }
};